/*--------------------------------------------------*/
/* Modelisateur objet d'un simulateur de robot		*/
/* Camille Roux										*/
/* Matthieu Segret									*/
/*--------------------------------------------------*/

#include <string>
#include <iostream>
#include "Robot.h"
#include "Etat.h"
#include "ALarretAVide.h"
#include "ALarretEnCharge.h"
#include "EnMouvementAVide.h"
#include "EnMouvementEnCharge.h"
#include "Fige.h"

using namespace std;

void afficher(char*);

int main()
{	
	
	try{
		cout << "*** Simulation Robot ***"<< endl;
		afficher("création des états");
		Fige fige("Fige");
		ALarretAVide aLarretAVide("ALarretAVide");
		ALarretEnCharge aLarretEnCharge("ALarretEnCharge");
		EnMouvementAVide enMouvementAVide("EnMouvementAVide");
		EnMouvementEnCharge enMouvementEnCharge("EnMouvementEnCharge");
	
		afficher("création du robot");
		Robot robot;
		
		afficher("état");
		robot.afficherEtat();
		
		afficher("avancer");
		robot.avancer();
		
		afficher("evaluerObstacle");
		robot.evaluerObstacle();
		
		afficher("tourner");
		robot.tourner();
		
		afficher("avancer");
		robot.avancer();
		
		afficher("avancer");
		robot.avancer();
		
		afficher("saisir");
		robot.saisir();
		
		afficher("peserObjet");
		robot.peserObjet();
		
		afficher("état");
		robot.afficherEtat();
		
		afficher("avancer");
		robot.avancer();
		
		afficher("arreter");
		robot.arreter();
		
		afficher("état");
		robot.afficherEtat();
		
		afficher("repartir");
		robot.repartir();
		
		afficher("état");
		robot.afficherEtat();
		
		afficher("poser");
		robot.poser();
		
		afficher("état");
		robot.afficherEtat();
		//test
		cout << "*** Fin de la Simulation ***"<< endl;
	}catch(Etat::MauvaisEtat &e){cout << e.geterreur();}
	
    return 0;
}

void afficher(char* texte){
	cout << "## Launcher : " << texte << endl;
}
